package gem.model.course;

import gem.database.Common;

public class Course
{
	private String m_CourseName;
	private int m_CourseID;
	private boolean m_IsModified;
	//====================================================================================//
	private ScienceDomain m_ScienceDomain = null;
	//====================================================================================//
	public Course( String name, int id, ScienceDomain sd )
	{
		m_CourseName = name;
		m_CourseID = id;
		
		sd.addCourse( this ); // This will also set parent!
		
		m_IsModified = false;
	}
	//====================================================================================//
	public Course( String name, ScienceDomain sd )
	{
		m_CourseName = name;
		m_CourseID = Common.DB_NEW_ENTRY;
		
		sd.addCourse( this ); // This will set parent as well!
		
		m_IsModified = false;
	}
	//====================================================================================//
	public void setScienceDomain( ScienceDomain parent ) { m_ScienceDomain = parent; }
	public ScienceDomain getScienceDomain() { return m_ScienceDomain; }
	//====================================================================================//
	public String getTitle() { return m_CourseName; }
	//====================================================================================//
	public int getId() { return m_CourseID; }
	//====================================================================================//
	
	//====================================================================================//
	public boolean getIsModified() { return m_IsModified; }
	public void setIsModified( boolean modified ) { m_IsModified = modified; }
	//====================================================================================//
	public void setTitle( String title )
	{
		m_CourseName = title;
		setIsModified( true );
	}
	//====================================================================================//
	@Override
	public String toString()
	{
		return this.m_CourseName;
	}
	//====================================================================================//
	@Override
	public boolean equals(Object obj)
	{
		if( obj instanceof Course == false )
		{
			return false;
		}
		if( this == obj )
		{
			return true;
		}
		Course temp = (Course)obj;
		return ( (temp.getId() == this.getId()) && (temp.getTitle().equals(this.getTitle())) );
	}
	//====================================================================================//
	@Override
	public int hashCode()
	{
		return getTitle().hashCode();
	}
	//====================================================================================//

}
